import request from '@/utils/request'

/**
 * 存储管理API服务
 */

/**
 * 初始化上传
 * @param {Object} uploadInitData 上传初始化数据
 * @returns {Promise} 返回上传初始化结果
 */
export const initUpload = (uploadInitData) => {
  return request({
    url: '/api/storage/file/init-upload',
    method: 'post',
    data: uploadInitData
  })
}

/**
 * 上传文件
 * @param {FormData} formData 文件表单数据
 * @param {number} fileId 文件ID
 * @returns {Promise} 返回上传结果
 */
export const uploadFile = (formData, fileId) => {
  return request({
    url: '/api/storage/file/upload?fileId=' + fileId,
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 下载文件
 * @param {number} fileId 文件ID
 * @returns {Promise} 返回文件下载结果
 */
export const downloadFile = (fileId) => {
  return request({
    url: '/api/storage/file/download/' + fileId,
    method: 'post',
    responseType: 'blob'
  })
}

/**
 * 删除文件
 * @param {number} fileId 文件ID
 * @returns {Promise} 返回删除结果
 */
export const deleteFile = (fileId) => {
  return request({
    url: '/api/storage/file/delete/' + fileId,
    method: 'post'
  })
}

/**
 * 获取文件详情
 * @param {number} fileId 文件ID
 * @returns {Promise} 返回文件详情
 */
export const getFileDetail = (fileId) => {
  return request({
    url: '/api/storage/file/detail/' + fileId,
    method: 'post'
  })
}

/**
 * 分页查询文件列表
 * @param {Object} queryDTO 查询参数
 * @returns {Promise} 返回文件分页数据
 */
export const listFiles = (queryDTO) => {
  return request({
    url: '/api/storage/file/list',
    method: 'post',
    data: queryDTO
  })
}

/**
 * 创建文件
 * @param {Object} fileData 文件数据
 * @returns {Promise} 返回操作结果
 */
export const createFile = (fileData) => {
  return request({
    url: '/api/storage/file/create',
    method: 'post',
    data: fileData
  })
}

/**
 * 更新文件
 * @param {Object} fileData 文件数据
 * @returns {Promise} 返回操作结果
 */
export const updateFile = (fileData) => {
  return request({
    url: '/api/storage/file/update',
    method: 'post',
    data: fileData
  })
}